Many different types of computing systems have attained widespread use around the world. These computing systems include personal computers, servers, mainframes and a wide variety of stand-alone and embedded computing devices. Sprawling client-server systems exist, with applications and information spread across many PC networks, mainframes and minicomputers. In a distributed system connected by networks, a user may access many application programs, databases, network systems, operating systems and mainframe applications. Computers provide individuals and businesses with a host of software applications including word processing, spreadsheet, accounting, e-mail, voice over Internet protocol telecommunications, and facsimile, as well as databases, service objects, file systems, I/O devices e.g., data storage, and the like.
Users of digital processors such as computers continue to demand greater and greater performance from such systems for handling increasingly complex and difficult tasks. As a result, demands for fast communications and accessibility to a variety of resources have increased significantly. As an illustration, in some current systems, if a user requires high reliability on some files and fast access on other files, a system administrator may need to allocate storage on different volumes to provide the different storage characteristics. The user may then have to keep track of where the different types of files are located within the network. For example, to obtain high reliability, a file may be stored within a volume corresponding to a data mirroring storage device. Alternatively, a volume corresponding to a data striping storage device may be used for storing a file requiring higher performance.
To satisfy the growing demands for availability of resources while balancing the availablilty with the costs of purchasing and maintaining large networks, new network models also allow dynamic allocation, deallocation, and reallocation of resources shared by multiple processes operating on multiple computer systems. For instance, multiple single or multi-processor computer systems may be connected together to create a cluster. Clusters of multiple systems provide increased compute capability. One such clustered system is a new industry standard architecture, commonly called InfiniBand™. InfiniBand™ is capable of providing decreased latency, greater bandwidth and increased expandability by providing a system-area network (SAN) that includes a channel-based, switched-fabric technology.
Each device or node coupled with networks such as SANs, whether a processor or I/O device, includes a channel adapter. The messages are transmitted from one device's channel adapter to another device's channel adapter via switches. InfiniBand™, for example, provides an industry standard interconnect for clustering and defines a mechanism for message transfer between end nodes. The Architecture outlines key management requirements for initialization, configuration, and control of communications between the nodes connected to the network.
In an InfiniBand fabric, for example, a solution has been proposed which allows resources within an I/O Unit (IOU) to be restricted to a set of hosts. Hosts are identified by their Globally Unique Identifiers (GUIDs). The resources which may be assigned to a host include access to Service Objects, number of Queue Pairs (QPs) reserved for this host, maximum number of QPs that the host may consume, and the like.
A problem with this approach is that hosts may be used for multiple purposes, and these varied purposes may require different access rights. For example, if a host is normally used as a development and test system, then an installation may wish to restrict access, disallowing access to service objects which represent production resources, and allowing only a limited set of QPs.
However, that same system may also serve as a failover target. For example, in the event that a production system fails, or additional capacity is required for production workloads, the development and test system may run production workloads. In this case the system will need the access rights and resource allotment associated with the production system.
Solutions that require a system programmer to go out to a management console, and redefine the resources so the host could access the production resources when the failover occurs are impractical and problematic. Given that the environment of failovers is normally very hectic, the added steps of doing this not only increases the time required to failover, but also provides an opportunity for human error where either this step is overlooked, or not flawlessly implemented.
Solutions that provide rights to the host node for all the possible resources to avoid the problems with reprogramming resource accessibility invite other problems. More specifically, hosts may be used for various purposes, for example a host may normally be used for software development, however it may also be used for production when the primary host fails, or when additional capacity is required. In such an environment, a customer may not wish to allow the host to have access rights to all the same resources when operating in each mode.
Therefore, there is a need for systems and arrangements to adjust resource accessibility based upon usage modes of the host nodes such as the accessibility of resources on an InfiniBand™ network to a supervisor instance based upon a usage mode associated with the supervisor instance and the resources of that supervisor instance makes available to clients of that supervisor instance based upon the usage mode of the client.